﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Presentation.Pages
{
    public partial class pastoral : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaPagina(null);
                this.btnProxima.Visible = false;
            }
        }

        private void carregaPagina(DEPalavraPastoral palavra)
        {
            try
            {
                if (palavra == null)
                {
                    using (ministerioprosperid1Entities banco = new ministerioprosperid1Entities())
                    {
                        palavra = banco.DEPalavraPastorals.ToList().Last();
                        if (palavra.TBMembro == null)
                            palavra.TBMembro = banco.DEMembroes.Where(q => q.Codigo.Equals(palavra.CodigoAutor)).Single();
                    }
                }

                this.ltlTitulo.Text = palavra.Titulo;
                this.ltlData.Text = palavra.Data.Day + " de " + Util.buscarMesPorExtenso(palavra.Data.Month) + " de " + palavra.Data.Year;
                this.ltlVersiculo.Text = palavra.Versiculo;
                this.ltlTexto.Text = palavra.Texto;
                this.ltlAutor.Text = palavra.TBMembro.Nome;

                Session.Add("palavraPastoral", palavra);
            }
            catch (Exception)
            {
                Util.showMessage(this, "Desculpe-nos. Houve um erro enquanto carregava a página.", "index.aspx");
            }
        }

        protected void btnAnterior_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                DEPalavraPastoral palavra = buscarPalavraNaSession();

                using (ministerioprosperid1Entities banco = new ministerioprosperid1Entities())
                {
                    var query = from p in banco.DEPalavraPastorals
                                where p.Data < palavra.Data
                                orderby p.Data descending
                                select p;

                    palavra = query.FirstOrDefault();

                    if (palavra == null)
                        Util.showMessage(this, "Não existe palavra pastoral anterior a esta.");
                    else
                    {
                        carregaPagina(palavra);
                        btnAnterior.Visible = !(banco.DEPalavraPastorals.Min(q => q.Codigo) == palavra.Codigo);
                        btnProxima.Visible = true;
                    }
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Desculpe-nos. Houve um erro enquanto carregava a palavra pastoral anterior.", "index.aspx");
            }
        }

        protected void btnProxima_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                DEPalavraPastoral palavra = buscarPalavraNaSession();

                using (ministerioprosperid1Entities banco = new ministerioprosperid1Entities())
                {
                    var query = from p in banco.DEPalavraPastorals
                                where p.Data > palavra.Data
                                orderby p.Data ascending
                                select p;

                    palavra = query.FirstOrDefault();

                    if (palavra == null)
                        Util.showMessage(this, "Não existe palavra pastoral anterior a esta.");
                    else
                    {
                        carregaPagina(palavra);

                        btnProxima.Visible = !(banco.DEPalavraPastorals.Max(q => q.Codigo) == palavra.Codigo);
                        btnAnterior.Visible = true;
                    }
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Desculpe-nos. Houve um erro enquanto carregava a próxima palavra pastoral.", "index.aspx");
            }
        }

        private DEPalavraPastoral buscarPalavraNaSession()
        {
            return (DEPalavraPastoral)Session["palavraPastoral"];
        }
    }
}